With the development of the information industry, different kinds of operating systems, application software, system software, and application infrastructures blend more and more with each other, thereby generating a Service-Oriented Architecture (SOA) technology which is widely used.
The SOA is a component model, which associates different functional units (referred to as services) of the application with each other through well-defined interfaces and contracts between these services. An application providing services to the outside is referred to as a service provider, and an application using the services provided by other applications is referred to as a service consumer. In a distributed environment, there is a large number of service consumers and service providers, such that some customer-oriented online shopping malls own thousands of service providers and even a larger number of service consumers, and in such cases, a cluster environment is formed.
With the continuous increase of services in the system, the dependencies of the services in the whole system gradually render a complex network chart phenomena, and in this case, the demand for a unified service addressing site becomes very apparent, thereby resulting in a service registration center. Usually, the service provider needs to uniformly register the service address information provided by the service provider, as well as the name, interface, attribute, and other meta-information to the service registration center. Then the service registration center provides the service information of each service provider to the service consumer in the form of a list or other forms, so that the service consumer may find the desired service provider according to this list of service information, thereby requesting the service provider to provide corresponding services.
However, in the cluster environment, there may be more than one target service address obtained by the service consumer via the service registration center, and when a certain server fails and cannot provide services normally, the requests falling within these servers will be executed unsuccessfully. In the case of a high concurrency, if the service consumer cannot identify the failed server and take effective isolation means in a timely manner, many service invocation failures will occur, thereby affecting availability of the system. With the increasing scale of the cluster and the larger failure that appears, there are more needs for an effective isolation method with respect to failures.
Currently, the service addressing strategies supporting the failure isolation functions mainly include:                a load-based addressing strategy to select a server with a lower load; however, such an addressing strategy needs to sense the load condition on the side of the service provider each time when the service invocation is performed, so as to increase the burden of the service provider on the real-time monitoring on the load thereof, and require the service consumer to acquire the load data in real time, thereby occupying a large amount of computing and network transmission resources;        a concurrency-based addressing strategy to select a server with a lower concurrency; however, such an addressing strategy requires the service consumer to perform real-time statistics on the concurrent invocation amount of each service provider each time when the service invocation is performed, which also requires a large amount of computing; and        a weight-based addressing strategy to select a server with a higher (or less, depending on the specific algorithm) weight serve, which is an integrated approach and calculates the weight according to a certain formula, and also requires computing for each invocation.        
The above addressing strategies for each service invocation all require performing corresponding information collection and computing, thereby having a high cost in computing especially during a high concurrency and a large number of invoked services and addresses of the service providers. In the environment of a relatively high success rate of invocation, many computing processes are not necessary.
Therefore, the technical problem, which is currently an urgent need for those skilled in the art to resolve, is to provide a service addressing mechanism in a distributed environment to improve the efficiency of the service invocation.